// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Παίξτε στο Καζίνο Dragonia με περιστροφές στο διαδίκτυο – Για Ελλάδα! – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
drakonia casino: πώς να παίξετε στις περιστροφές του διαδίκτυου στην Ελλάδα
Εάν ζείτε στην Ελλάδα και θέλετε να παίξετε στις περιστροφές του διαδίκτυου, τότε το Drakonia Casino είναι μια επιλογή πολύ ενδιαφέρον! 1. Δημιουργήστε ένα λογαριασμό στο Drakonia Casino και απολαύστε ένα πρόσφορο καλωσόρισης.
2. Επιλέξτε μεταξύ πολλών παιχνιδιών περιστροφών, συμπεριλαμβανομένων πολυπλοκών και απλών εναλλακτικών.
3. Ρυθμίστε τις στοιχείες της στρατηγικής σας παιχνιδιού, όπως το όριο σας πόντων και την τιμή των στοιχημάτων.
4. Χρησιμοποιήστε τις δωρεάν γύρους ή τα δωρεάν χρήματα που παρέχονται από το καζίνο για να αναπτύξετε τη στρατηγική σας.
5. Ακολουθήστε την ετικέτα #DrakoniaCasino στα μέσα κοινωνικής διασύνδεσης για να μάθετε τις τελευταίες προσφορές και νέα.
6. Παίξτε ευθύνα και ακολουθείτε τις προδιαγραφές του καζίνου για να βεβαιωθείτε ότι είστε σε πλήρη συμμόρφωση με τον νόμο.
7. Απολαύστε την εμπειρία του Drakonia Casino και έχετε πιθανότητα να κερδίσετε!
η εμπειρία του καζινός Dragonia: τι πρέπει να γνωρίζετε για τις περιστροφές του διαδίκτυου
Η εμπειρία του καζινού Dragonia στο διαδίκτυο είναι μια εντυπωσιακή και ανοιχτή πόρτα για την κρατάνση σου στον κόσμο των περιστροφών online. Πρώτα και κυρίως, Dragonia είναι εγγεγραμμένο και ελεγχόμενο από την Εвроπαϊκή Ένωση, εν garanteia για την ασφαλή και αξιόπιστη λειτουργία της πλατφόρμας. Το Dragonia προσφέρει ένα είδικο περιβάλλον για τις περιστροφές online, με έναν ευέλικτο διзайн και εύκολη χρήση. Έχει ένα πολύ πλούσιο βιβλίο παιγνίων, περιλαμβάνοντας παιχνίδια καρτών, παιχνίδια τρικών, ρολικά και πολλά άλλα. Το Dragonia διαθέτει επίσης ένα ισχυρό προграμμα βοηθείας πελατών, προσφέροντας 24/7 υποστήριξη στους χρήστες του μέσω ζivo συνομιλίας, ηλεκτρονικού ταχυδρομείου και τηλεφωνικής επικοινωνίας. Έχει επίσης ένα προγράμμα πιστοποιήσεων προγραμματισμένο να προσφέρει προϊόντα και υπηρεσίες προσαρμοσμένες στον ιδιαίτερο του χρήστη. Τέλος, το Dragonia προσφέρει ένα ασφαλές περιβάλλον για τις συναλλαγές, χρησιμοποιώντας την τεχνολογία SSL 128-bit για την ασφαλή μεταφορά των δεδομένων σας. Αν είστε συζητητής των περιστροφών online, τότε η εμπειρία του Dragonia είναι αναγκαία.
πώς να ανοίξετε λογαριασμό στο καζίνο Dragonia για περισσότερες ευκαιρίες να παίξετε στις περιστροφές
Θέλετε να ανοίξετε λογαριασμό στο καζίνο Dragonia και να έχετε περισσότερες ευκαιρίες να παίξετε στις περιστροφές; Ακολουθήστε αυτά τα βήματα:
1. Επισκεφθείτε την ιστocyphering URL dragonia-casino.com/el και πατήστε το κουμπί “Δημιουργία Λογαριασμού”.
2. Συμπληρώστε τα στοιχεία σας, συμπεριλαμβανομένου του ονόματος σας, του e-mail σας και του κωδικού πρόσβασης σας.
3. Επιβεβαιώστε το e-mail σας πατώντας το συνδέσμο που στείλαμε σε εσάς.
4. Συμπληρώστε τις απαιτούμενες πληροφορίες σχετικά με την πληρωμή και την απόδοση των κέρδων σας.
5. Πληρώστε το ποσό που θέλετε να χρησιμοποιήσετε για τα παιχνίδια σας.
6. Έχετε τώρα ένα λογαριασμό στο καζίνο Dragonia και μπορείτε να ξεκινήσετε να παίζετε!
7. Με τον λογαριασμό σας στο Dragonia Casino, έχετε περισσότερες ευκαιρίες να παίξετε στις περιστροφές και να κερδίσετε!
τι να κανετε αν περιπτώσει προβλημάτων κατά τη λειτουργία στις περιστροφές του καζινού Dragonia στο διαδίκτυο
Αν συναντήσετε προβλήματα Pendant τη λειτουργία στις περιστροφές του καζινού Dragonia στο διαδίκτυο, συμβουλευτώντας να προσεχθείτε το ακόλουθο: 1. Σίγουρα στο λογαριασμό σας είναι σωστά συνδεδεμένος;
2. Έχετε ενεργοποιήσει τη JavaScript;
3. Ελέγξτε την σύνδεση σας στο διαδίκτυο;
4. Έχετε πληρωμή τις συνθήκες χρήσης του καζινού;
5. Επικοινωνήστε με την υποστήριξη του καζινού αν τα προβλήματα συνεχίζονται;
6. Μην παραδίδετε πληροφορίες προσωπικής συντήρησης κανεναν ποτέ;
7. Παρακαλούμε, μην αποδεχθείτε να χρησιμοποιήσετε προγράμματα προσαρμογής ή βοτs.
Ένας εντυπωσιακός παίκτης με το όνομα Γιώργος διασήμανε το Καζίνο Dragonia για τις εξαιρετικές δυνατότητες που προσφέρει στον πίνακα των περιστροφών στο διαδίκτυο.
«Τα περισσότera καζινά παρέχουν μόνο τη βασική έκδοση των περιστροφών, αλλά το Dragonia προσφέρει περισσότερα. Το διασφάλισε ότι θα έχω περισσότερες ευκαιρίες να κέρδισε και να ενjoy τον προσεχές μου χρόνο στο καζίνο», δήλωσε ο Γιώργος.
Επίσης, η παίκτισσα Μαρία είναι άλλη εντυπωσιακή πελάτης του Dragonia Casino.
“Είμαι πολύ ευχαριστημένη με την εμπειρία που έχω συνοδεύσει στο Dragonia. Η διαθέσιμη ποσότητα περιστροφών και τα προσφέριμά του έχουν συνεισφέρει στην εντυπωσιακή περίπτωση που έχω ζήσει. Το προτείνω σε όλους τους αγόριες και τις αγόριες που ενδιαφέρονται να παίξουν στα καζίνα στο διαδίκτυο», δήλωσε η Μαρία.
Παίξτε στο Καζίνο Dragonia με περιστροφές στο διαδίκτυο – Για Ελλάδα!
Παίξτε στο Καζίνο Dragonia με περιστροφές στο διαδίκτυο, για εντελής διασκέδαση και ευκαιρίες νικήσεων!
Πώς μπορώ να παίξω; Εγγραφευτείτε στο Dragonia Casino και χoose τις περιστροφές σας με χρήματα πραγματικού χρήματος ή με νόμισμα δωρεάν.
Τι είναι τα προνόμια να παίξετε στο Dragonia Casino; Λαμβάνετε έως 500 δωρεάν spins και μεγάλες ποσότητες νικών dragonia gr στο πιο ιδιαίτερο casino online για την Ελλάδα.